// #include"Com.hpp"

// extern Log log;

// int main()
// {
//     sleep(3);
//     int shmid = GetShm();
//     log(Debug, "creat shm done, success");
    
//     sleep(5);

//     char* shmaddr = (char*)shmat(shmid, nullptr, 0);         //挂接成功
//     log(Debug, "attach shm done, success");              

//     sleep(5);
//     shmdt(shmaddr);
//     log(Debug, "attach shm done, shmaddr: ox%x", shmaddr);   //取消挂接

//     sleep(5);


//     shmctl(shmid, IPC_RMID, nullptr);
//     log(Debug, "detach shm done, shmaddr: ox%x", shmaddr);

//     sleep(5);

//     return 0;
// }


#include"Com.hpp"

extern Log log;

int main()
{
    int shmid = GetShm();
    char* shmaddr = (char*)shmat(shmid, nullptr, 0);         //挂接成功

//ipc code
    
    while (true)
    {
        char buffer[1024];
        cout << "Please Enter@ ";
        fgets(buffer, sizeof(buffer), stdin);   //从键盘获取数据
        
        //将数据拷贝到shmaddr缓冲区中。 shmat的返回值是一个地址， 
        memcpy(shmaddr, buffer, sizeof(buffer) + 1);   //memcpy拷贝的长度长于src的话， 不够的会直接拷贝成\0, 这里其实越界了， 可能会发生危险
    }

//


    shmdt(shmaddr);
    shmctl(shmid, IPC_RMID, nullptr);
    return 0;
}